﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Tipler.Siniflar;
using Tipler.OzellikTipleri;
using Tipler.DataSetler;
using Tipler.Enumlar;
using Classes;
using System.Text;
using System.IO;
using System.Configuration;
using IKYSWeb.Siniflar;
using IsKurallari.Duyuru;

namespace IKYSWeb.Duyurular
{
    [YetkiAttribute(EnumSayfaYetkileri.Herkes_Yetkili)]
    public partial class Duyurular_Duyuru : BasePage
    {
        #region Sayfa Baslangic

        private int SecilenKontrolID
        {
            get { return (int)ViewState["SecilenKontrolID"]; }
            set { ViewState["SecilenKontrolID"] = value; }
        }

        private DuyuruDataSet DSDuyurular
        {
            get { return (DuyuruDataSet)Session["Duyurular_DSDuyuru"]; }
            set { Session["Duyurular_DSDuyuru"] = value; }

        }

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                Session["Duyurular_DSDuyuru"] = null;
                DuyuruListele();
            }

        }

        #endregion

        #region Buton İslemleri

        protected void btnKaydet_Click(object sender, EventArgs e)
        {
            //if (!YetkiAraci.YetkiliMi(EnumYetkiler.DuyuruKaydet, Response)) return;
            DuyuruDataSet.DuyuruRow drDuyuru = null;

            if (SecilenKontrolID == 0)
            {
                drDuyuru = DSDuyurular.Duyuru.NewDuyuruRow();
                drDuyuru.ID = YeniIDGetir(DSDuyurular.Duyuru.TableName);
            }
            else
                drDuyuru = DSDuyurular.Duyuru.FindByID(SecilenKontrolID);

            drDuyuru.Aktif = Convert.ToInt32(ddlDurum.SelectedValue);
            drDuyuru.Bas_Tar = Convert.ToDateTime(txtBasTar.Text);
            drDuyuru.Bit_Tar = Convert.ToDateTime(txtBitTar.Text);
            drDuyuru.Kayit_Tar = DateTime.Now.Date;
            drDuyuru.Baslik = txtBaslik.Text;
            drDuyuru.Konu = txtKonu.Text;
            drDuyuru.ISDeleted = KayitDurumu.Kayitli.GetHashCode();
            drDuyuru.IslemiYapan = -1;
            drDuyuru.DosyaTipi = "";

            #region UPLOAD
            //-------------------------------------
            int imgSize = fuYukle.PostedFile.ContentLength;
            string imgType = fuYukle.PostedFile.ContentType;
            if (fuYukle.PostedFile.ContentLength != 0)
            {
                #region dosya tipi kontrol

                bool UygunTip = false;
                if (fuYukle.PostedFile.ContentLength > 1048576)
                {
                    lblDosya.Text = "Dosyanız 1024 KB dan büyük olamaz!";
                    return;
                }
                else
                {
                    switch (fuYukle.PostedFile.ContentType)
                    {
                        case "image/pjpeg":
                            {
                                UygunTip = true; break;
                            }
                        case "application/msword":
                            {
                                UygunTip = true; break;
                            }
                        case "application/vnd.ms-excel":
                            {
                                UygunTip = true; break;
                            }
                        case "application/vnd.ms-powerpoint":
                            {
                                UygunTip = true; break;
                            }
                        case "application/x-zip-compressed":
                            {
                                UygunTip = true; break;
                            }
                        case "application/octet-stream": // dosya acik veya tiff dosyasi demek ...
                            {
                                if (System.IO.Path.GetExtension(fuYukle.PostedFile.FileName).ToLower() == ".tif")
                                {
                                    // tiff ise
                                    UygunTip = false; break;
                                }
                                else
                                {
                                    // dosya acik ise 
                                    lblDosya.Text = "Sisteme yüklemeye çalıştığınız dosya şu anda açık .Lütfen belgeyi kapattıktan sonra tekrar deneyiniz.";
                                    break;
                                }
                            }
                        default:
                            {
                                lblDosya.Text = "Lütfen Yüklemek İçin Geçerli Bir Dosya Seçiniz";
                                break;
                            }
                    }
                }
                #endregion

                if (!UygunTip)
                {
                    lblDosya.Text = "Bu seçtiğiniz dosya tipi uygun değil!";
                    return;
                }
                drDuyuru.DosyaTipi = fuYukle.FileName;
                DosyaAraci.DosyaYukle(drDuyuru.DosyaTipi, fuYukle.FileBytes, EnumDosyaTipi.Duyuru);
            }
            //-------------------------------------
            #endregion

            if (SecilenKontrolID == 0) DSDuyurular.Duyuru.AddDuyuruRow(drDuyuru);

            DuyuruIsKurali oDuyuru = new DuyuruIsKurali();
            oDuyuru.DuyuruKaydet(DSDuyurular);
            MesajGoster(this.Page, "Duyuru Başarıyla Kaydedilmiştir!", MesajTipiEnum.Bilgi);
            Temizle();
            DuyuruListele();
            //CachePage.DuyuruDoldur();
        }

        protected void btnIptal_Click(object sender, EventArgs e)
        {
            Temizle();
        }

        protected void btnAra_Click(object sender, EventArgs e)
        {
            //if (!YetkiAraci.YetkiliMi(EnumYetkiler.DuyuruListele, Response)) return;
            DuyuruIsKurali oDuyuru = new DuyuruIsKurali();
            FonksiyonSonuc<DuyuruDataSet> oSonuc = oDuyuru.KosulluDuyuruGetir(txtAraBasTar.Text, txtAraBitTar.Text, Convert.ToInt32(ddlAraDurum.SelectedValue));

            if (!oSonuc.HataVarMi)
            {
                DSDuyurular = new DuyuruDataSet();
                DSDuyurular = oSonuc.Sonuc;

                grvDuyuru.DataSource = DSDuyurular;
                grvDuyuru.DataBind();
            }
            else
            {
                MesajGoster(this.Page, "Duyurular listelenirken hatayala karşılaşıldı.", MesajTipiEnum.Hata);
                return;
            }

        }

        #endregion

        #region Event İslemleri

        protected void grvDuyuru_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            int rowIndex = Convert.ToInt32(e.CommandArgument);

            DuyuruDataSet.DuyuruRow dr = DSDuyurular.Duyuru.FindByID(SecilenKontrolID);

            if (e.CommandName == "indir")
            {
                SecilenKontrolID = Convert.ToInt32(grvDuyuru.DataKeys[rowIndex].Value.ToString());

                if ((dr.DosyaTipi == "") && (dr.EkDosya.Length == 0))
                    return;

                Response.ContentType = dr.DosyaTipi;
                byte[] icerik = dr.EkDosya;

                Response.Clear();
                Response.ClearHeaders();
                Response.AddHeader("Content-type", dr.DosyaTipi);
                if (dr.DosyaTipi == "application/msword")
                    Response.AddHeader("Content-Disposition", "attachment;filename=\"eklenti.doc\"");
                else if (dr.DosyaTipi == "application/vnd.ms-excel")
                    Response.AddHeader("Content-Disposition", "attachment;filename=\"eklenti.xls\"");
                else if (dr.DosyaTipi == "application/vnd.ms-powerpoint")
                    Response.AddHeader("Content-Disposition", "attachment;filename=\"eklenti.pps\"");
                else if (dr.DosyaTipi == "application/x-zip-compressed")
                    Response.AddHeader("Content-Disposition", "attachment;filename=\"eklenti.zip\"");
                else
                    Response.AddHeader("Content-Disposition", "attachment;filename=\"eklenti\"");
                Response.BinaryWrite(icerik);
                Response.Flush();

                Response.Write("<script language=\"javascript\">");
                Response.Write("document.execCommand(\"SaveAs\");");
                Response.Write("</script>");
            }
            if (e.CommandName == "Sec")
            {
                //if (!YetkiAraci.YetkiliMi(EnumYetkiler.DuyuruGuncelle, Response)) return;
                SecilenKontrolID = Convert.ToInt32(grvDuyuru.DataKeys[rowIndex].Value.ToString());

                KontrolDetayYukle(SecilenKontrolID);
            }
            else if (e.CommandName == "Sil")
            {
                //if (!YetkiAraci.YetkiliMi(EnumYetkiler.DuyuruSil, Response)) return;
                SecilenKontrolID = Convert.ToInt32(grvDuyuru.DataKeys[rowIndex].Value.ToString());

                DuyuruSil(SecilenKontrolID);
            }
        }

        protected void grvDuyuru_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                e.Row.Cells[4].Text = ((EnumDuyuruAktifPasif)Convert.ToInt32(e.Row.Cells[4].Text)).ToString();

            }
        }

        protected void grvDuyuru_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            grvDuyuru.PageIndex = e.NewPageIndex;
            GridYukle(true, e.NewPageIndex);
        }

        #endregion

        #region Fonksiyonlar

        private void KontrolDetayYukle(int KontrolID)
        {
            SecilenKontrolID = KontrolID;
            lblDetay.Text = "Duyuru Güncelleme";
            DuyuruDataSet.DuyuruRow drDuyuru = DSDuyurular.Duyuru.FindByID(SecilenKontrolID);

            txtKonu.Text = drDuyuru.Konu.ToString();
            txtBasTar.Text = drDuyuru.Bas_Tar.ToShortDateString();
            txtBaslik.Text = drDuyuru.Baslik.ToString();
            txtBitTar.Text = drDuyuru.Bit_Tar.ToShortDateString();
            ddlDurum.SelectedValue = drDuyuru.Aktif.ToString();

            if (drDuyuru.DosyaTipi!="")
            {
                if (drDuyuru.DosyaTipi != string.Empty)
                {
                    if (drDuyuru.DosyaTipi == "application/msword")
                        imTip.ImageUrl = "~/App_Themes/dib/images/word_kucuk.JPG";

                    if (drDuyuru.DosyaTipi == "application/vnd.ms-excel")
                        imTip.ImageUrl = "~/App_Themes/dib/images/excel_kucuk.JPG";

                    if (drDuyuru.DosyaTipi == "application/vnd.ms-powerpoint")
                        imTip.ImageUrl = "~/App_Themes/dib/images/ppt_kucuk.JPG";

                    if (drDuyuru.DosyaTipi == "application/x-zip-compressed")
                        imTip.ImageUrl = "~/App_Themes/dib/images/rar.JPG";

                    imTip.Visible = true;
                }
                else
                    imTip.Visible = false;
            }
            else
                imTip.Visible = false;
        }

        private void DuyuruSil(int KontrolID)
        {
            DuyuruIsKurali oDuyuru = new DuyuruIsKurali();
            DuyuruDataSet.DuyuruRow drDuyuru = null;

            drDuyuru = DSDuyurular.Duyuru.FindByID(KontrolID);
            drDuyuru.ISDeleted = KayitDurumu.Silindi.GetHashCode();
            oDuyuru.DuyuruKaydet(DSDuyurular);

            MesajGoster(this.Page, "Duyuru Silindi!!!", MesajTipiEnum.Bilgi);
            Temizle();
            DuyuruListele();
            //CachePage.DuyuruDoldur();
        }

        private void DuyuruListele()
        {
            SecilenKontrolID = 0;
            DuyuruIsKurali oDuyuru = new DuyuruIsKurali();

            FonksiyonSonuc<DuyuruDataSet> Sonuc = oDuyuru.DuyuruGetir();
            DSDuyurular = Sonuc.Sonuc;

            grvDuyuru.DataSource = DSDuyurular;
            grvDuyuru.DataBind();

            lblDetay.Text = "Yeni Duyuru";

        }

        private void Temizle()
        {
            txtBaslik.Text = string.Empty;
            txtKonu.Text = string.Empty;
            txtBasTar.Text = string.Empty;
            txtBitTar.Text = string.Empty;
            ddlDurum.SelectedIndex = 0;
            lblDetay.Text = "Yeni Duyuru";
            SecilenKontrolID = 0;
            imTip.Visible = false;

        }

        private void GridYukle(bool PageIndexChanging, int TabIndex)
        {
            DuyuruDataSet dsTemp = (DuyuruDataSet)DSDuyurular;

            //if (dsTemp != null) GridDoldur(dsTemp, grvDuyuru);
            //else GridDoldur(null, grvDuyuru);
        }

        #endregion

    }
}